\section{RISCO}

\begin{frame}
\textbf{Processador RISCO}
\end{frame}

\begin{frame}
\frametitle{RISCO}
\begin{itemize}
  \item A escolha do processador de um SE influencia as métricas discutidas
  \begin{enumerate}
    \item Projeto próprio, equipe de desenvolvimento interna
    \item Comprar o processador de uma empresa sob a forma de IP 
    \item Processador de propósito geral (de ``prateleira'')
  \end{enumerate}

\item Alternativa: \emph{Open Hardware}
\item Especificação disponível sob uma licença permissiva
\item RISCO
\end{itemize}
\end{frame}


\begin{frame}
\frametitle{RISCO}
\begin{itemize}
  \item Microprocessador 32 bits (JUNQUEIRA; SUZIM, 1993)
  \item Projeto de pesquisa da UFRGS. Objetivos:
  \begin{itemize}
    \item Simplicidade de sintetização
    \item Facilidade de simulação
    \item Baixo consumo de energia
    \item Bom custo/benefício
  \end{itemize}
  \item Pertence à família RISC:
  \begin{itemize}
    \item Conjunto de instruções conciso
    \item Implementação simples e previsível
    \item Estágios de pipeline bem definidos
    \item Instruções uniformes, ortogonais
  \end{itemize}
\end{itemize}
\end{frame}


\begin{frame}
\frametitle{Características}
\begin{itemize}
  \item Características gerais:
  \begin{itemize}
    \item Dados e instruções são palavras de 32 bits
    \item Endereçamento por byte (4 GB de memória principal)
    \item Barramento multiplexado de 32 bits: endereços e dados
    \item 32 registradores: 29 de propósito geral, 3 específicos
    \item Pipeline de 3 estágios
  \end{itemize}
  \item Possível opção comercial viável para SE's
\end{itemize}
\end{frame}


\begin{frame}
\frametitle{Conjunto de Instruções}
\begin{itemize}
  \item Instruções de 3 endereços: DST, FT1 e FT2
  \item Operandos: registradores ou constantes
  \item Tipos: aritmética / lógica, saltos, acesso a memória e chamada de
  sub-rotinas
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Formatos de instrução}

\begin{figure}[htb]
  \centering
  \includegraphics[scale=0.5]{images/instrucao-divisao_opcode}
\end{figure}

\begin{itemize}
  \item Ortogonalidade: instrução $\times$ operandos
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Formatos dos operandos}

\begin{figure}[htb]
  \centering
  \includegraphics[scale=0.5]{images/instrucao-operandos}
\end{figure}

\begin{table}[htb!]
\begin{center}
\begin{tabular}{ c | c | c | c | c | c | c }
  & \textbf{DST} & \textbf{FT1} & \textbf{FT2} & F1 & F0 & SS2 \\
  \hline
  1 & Rdst & Rft1 & Rft2 & 0 & 0 & 0 \\
  2 & Rdst & Rft1 & $K_{11}$ & 0 & 0 & 1 \\
  3 & Rdst & R0 & $K_{17}$ & 0 & 1 & x \\
  4 & Rdst & Rdst & $K_{17}[15:0]$ \& $K_{17}[16]$ * 16 & 1 & 0 & x \\
  5 & Rdst & Rdst & $K_{17}$ & 1 & 1 & x \\
\end{tabular}
\end{center}
\caption{Interpretação dos operandos RISCO}
\end{table}

\end{frame}


\begin{frame}
\frametitle{Registradores}
\begin{itemize}
  \item 32 registradores idênticos (guardam uma palavra)
  \item 3 de propósito especial:
  \begin{description}
    \item[R00] Sempre guarda 0
    \item[R01] Palavra de estado (PSW): N, O, Z, C, ...
    \item[R31] Contador de programa
  \end{description}
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Exemplos de instruções}

\texttt{add \$r5, \$r0, \$r4 \\
sub \$r5, \$r0, \$r4 \\
sll \$r4, \$r4, -3 \\
sra \$r6, \$r7, 10 \\
jmpeq 0x3a56b \\
ld \$r5, [\$r6 + 1] \\
stpod [\$r6 + \$r2], \$r5 \\
sr 0x678be4
}

\end{frame}


\begin{frame}
\frametitle{RISCO}
\begin{itemize}
  \item Modelagens em SystemC e VHDL
  \item Não tem como objetivo o desenvolvimento de software
  \item A plataforma de desenvolvimento deve inicialmente cobrir a base:
  \begin{itemize}
    \item Suporte a código escrito diretamente para o RISCO
  \end{itemize}
\end{itemize}
\end{frame}

